<?php
/**
 * sys controller
 * @package kernel_lib_sys
 */
/**
 * sys controller
 * @author pandajingjing
 * @package kernel_lib_sys
 */
abstract class sys_controller{

	/**
	 * 私有变量
	 * @var array
	 */
	protected $_arrPrivate=array();

	/**
	 * 构造函数
	 */
	function __construct(){
		$this->_arrPrivate['DEBUGGER']=sys_debugger::getInstance();
		$this->_arrPrivate['LOGGER']=sys_logger::getInstance();
		$this->_arrPrivate['VARI']=sys_variable::getInstance();
	}

	/**
	 * 析构函数
	 */
	function __destruct(){

	}

	/**
	 * 获取参数
	 * @param string $p_strKey
	 * @param string $p_strMethod post, get, cookie, url
	 * @param string $p_strType
	 * @return mix
	 */
	protected function getParam($p_strKey,$p_strMethod='',$p_strType=''){
		load_lib('/util/string');
		$mixValue=$this->_arrPrivate['VARI']->getParam($p_strKey,$p_strMethod);
		$mixValue=util_string::trimString($mixValue);
		if(''==$p_strType){
			return $mixValue;
		}else{
			if(util_string::chkDataType($mixValue,$p_strType)){
				return $mixValue;
			}else{
				return NULL;
			}
		}
	}

	/**
	 * 获取参数
	 * @param string $p_strType
	 * @return mix
	 */
	protected function getParams($p_strType=''){
		return $this->_arrPrivate['VARI']->getParams($p_strType);
	}

	/**
	 * 获取当前时间
	 * @return int
	 */
	protected function getTime(){
		return $this->_arrPrivate['VARI']->getTime();
	}

	/**
	 * 获取微秒级时间
	 * @return float
	 */
	protected function getMicroTime(){
		return $this->_arrPrivate['VARI']->getMicroTime();
	}

	/**
	 * 开始调试
	 * @param string $p_strModule
	 */
	protected function startDebug($p_strModule){
		$this->_arrPrivate['DEBUGGER']->startDebug($p_strModule);
	}

	/**
	 * 发送调试信息
	 * @param string $p_strMsg
	 */
	protected function showDebugMsg($p_strMsg){
		$this->_arrPrivate['DEBUGGER']->showMsg($p_strMsg);
	}

	/**
	 * 结束调试
	 * @param string $p_strModule
	 */
	protected function stopDebug($p_strModule){
		$this->_arrPrivate['DEBUGGER']->stopDebug($p_strModule);
	}

	/**
	 * 记录日志
	 * @param array $p_arrContent
	 * @param string $p_strClass
	 */
	protected function addLog($p_arrContent,$p_strClass='common'){
		$this->_arrPrivate['LOGGER']->addLog($p_arrContent,$p_strClass);
	}

	/**
	 * 在控制器开始时执行（调度使用）
	 */
	function beforeRequest(){

	}

	/**
	 * 在控制器结束时执行（调度使用）
	 */
	function afterRequest(){

	}

	/**
	 * 入口函数（调度使用）
	 */
	abstract function doRequest();
}